package com.ts.api.module.api.convert.platform.handler;

import com.gitee.apanlh.web.model.vo.RequestVO;
import com.ts.api.module.api.convert.core.entity.ApiApplyParameter;
import com.ts.api.module.api.convert.core.entity.ApiBizStatus;
import com.ts.api.module.api.convert.core.entity.ApiDataExchangeParameter;
import com.ts.api.module.api.convert.core.handler.ApiConvertHandler;
import com.ts.api.module.api.convert.platform.entity.RespPlatformNoticeApply;
import com.ts.api.module.api.convert.platform.entity.RespPlatformPhoneMd5Apply;
import com.ts.api.module.api.convert.platform.entity.RespPlatformPhoneMd5DataExchange;

import java.util.Map;

/**
 *  下游平台转换器
 *
 *  @author caoxin
 */
public interface ApiPlatformPhoneMd5ConvertHandler extends ApiConvertHandler {

    /**
     *  转换撞库请求体json
     *
     *  @param  apiDataExchangeParameter
     *  @return String
     */
    @Override
    Object dataExchange(ApiDataExchangeParameter apiDataExchangeParameter) throws Exception;

    /**
     *  响应体验证，是否为撞库成功或失败
     *  自行根据响应体中的状态做判断验证
     *
     *  @param  respJson    返回json
     *  @return boolean
     */
    RespPlatformPhoneMd5DataExchange respDataExchange(String respJson) throws Exception;

    /**
     *  转换进件请求
     *
     *  @param  apiApplyParameter
     *  @return String
     */
    @Override
    Object apply(ApiApplyParameter apiApplyParameter) throws Exception;

    /**
     *  根据响应体验证，是否为进件成功或失败
     *  自行根据响应体中的状态做判断验证
     *
     *  @param  respJson    返回json
     *  @return boolean
     */
    RespPlatformPhoneMd5Apply respApply(String respJson) throws Exception;

    /**
     *  解析平台回调请求
     *
     *  @param  requestVO 请求实体
     *  @return ApiPlatFormApplyNoticeMessage   返回解析后的消息实体类
     */
    RespPlatformNoticeApply parseApplyNotice(RequestVO requestVO);

    /**
     *  返回平台回调请求
     *
     *  @param  apiBizStatus  业务状态消息类
     *  @return Map 返回对应数据
     */
    Map<String, Object> respApplyNotice(ApiBizStatus apiBizStatus);
}
